Developers.IO 2017セッション「Pythonを使ってターミナル上でアニメーションを動かそう」で話しました #cmdevio2017
サーモン大好き横山です。
クラスメソッドが運営するIT系技術ブログDevelopers.IOのカンファレンスイベントDevelopers.IO 2017にて、セッション「Pythonを使ってターミナル上でアニメーションを動かそう」を発表しました。そのレポートです。
発表スライド
スライド
使用したソース
tututen/devio2017-terminal-animation: Developers.IO 2017 発表で使用したスクリプト にソースコードをPushしています。
テキストを使ったアニメーション
前半は、最初にCarriage Return(以下CR)を使ったアニメーションについて話しました。
こちらはアニメーションするにはとてもお手軽ですが、表現方法が1行に限られ、表現できることが限られてくるのが難点です
次に、clearコマンドを使ったアニメーションについて話しました。
CRを使ったアニメーションと違い、ターミナル全体を使ってアニメーションを表現することが可能です。
ただ、出力する量が大きくなるにつれ、画面のチラツキが気になるようになります。
最後に curses を使ったアニメーションの話をしました。
こちらは、TUIアプリケーションに特化したライブラリですので、相性がよく、clearを使った同様アニメーションもチラツキが少なく表現できます。
また、ターミナル上の座標を指定して出力も出来るので、任意の場所に文字を置きやすくなっています。
しいて難点を上げるなら、とっつきにくさが挙げられるます。
初期化処理や、痒い所に手がとどくまでの道のりが他の手法と比べ長いです。しかし、それを補う程の便利さはあります。
どの手法も手間と表現の自由度が違うので、適材適所で作成することをオススメしました。
画像を使ったアニメーション
後半は、 pillow を使い、画像からターミナルへの出力のデモを行いました。
1枚画像からターミナルへ文字として出力する方法を発表しました。
説明後はGIF画像の分割し、前半で説明したcurses組み合わせてアニメーションするところまで話しました。
おまけ
最後に発表したおまけの動画バージョンです。
[SWF]https://www.youtube.com/watch?v=Dqbl22G0_Lg,720,480[/SWF]
まとめ
普段、お仕事ではPythonは業務のちょっとした手助けで書いたり、AWS Lambda上で動くものを書いたりしますが、
今回こういう場で、業務には役には立たないかもしれないけどこういうこともできるよ!というのを提示できたのであれば幸いです。